home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-04-21 | 24.9 KB | 1,011 lines |
- 10000 DIM GALAXY(10,10),WARP.COOR(9,2),KLINGON.STATS(3,3)
- 10010 DIM DAMAGE.STATS(8),DEVICE$(8)
- 10020 DEF FN A$(X) = MID$(COMM$,X,1)
- 10030 DEF FN B$(X) = RIGHT$(COMM$, LEN(COMM$) - X)
- 10040 DEF FN C(X) = INSTR(GEF$, FN A$(X))
- 10050 DEF FN K(D) = (KLINGON.STATS(I,2) - SECTORY) ^ 2
- 10060 DEF FN J(D) = (KLINGON.STATS(I,1) - SECTORX) ^ 2
- 10070 DEF FN D(D) = SQR( FN J(D) + FN K(D))
- 10080 DEF FN R(R) = INT( RND(1) * 10 + 1)
- 10090 RANDOMIZE VAL( RIGHT$( TIME$ ,2))
- 10100 DEFINT O
- 10110 DEFDBL U-W
- 10120 KEY OFF
- 10130 SCREEN 0,1,1,1
- 10140 CLS
- 10150 RESTORE
- 10160 FOR OO = 1 TO 8
- 10170 READ DEVICE$(OO)
- 10180 NEXT OO
- 10190 DATA WARP ENGINES,SHORT RANGE SENSORS,LONG RANGE SENSORS,PHASER CONTROL
- 10200 DATA PHOTON TUBES,DAMAGE CONTROL,SHIELD CONTROL,LIBRARY-COMPUTER
- 10210 DATA ANTARES,RIGEL,PROCYON,VEGA,CANOPUS,ALTAIR,SAGITTARIUS,POLLUX
- 10220 DATA SIRIUS,DENEB,CAPELLA,BETELGEUSE,ALDERBARAN,REGULUS,ARCTURUS
- 10230 DATA SPICA,CYGNUS,CRAB,NEBULUS,SCORPIUS
- 10240 STARDATE = INT( RND(1) * 20 + 20) * 100
- 10250 STARDATE.CONSTANT = STARDATE
- 10260 DAYS = 75 + INT( RND(1) * 10 + 1)
- 10270 ANY.DAMAGE = 0
- 10280 ENERGY = 10000
- 10290 ENERGY.CONSTANT = ENERGY
- 10300 TORPEDOES = 10
- 10310 TORPEDOE.CONSTANT = 10
- 10320 KLINGON.SHIELDS = 200
- 10330 SHIELDS = 0
- 10340 NO.OF.STARBASES = 0
- 10350 NO.OF.KLINGONS = 0
- 10360 HYPERX = 0
- 10370 HYPERY = 0
- 10380 OUT.OF.GALAXY = 0
- 10390 SINGLE$ = ""
- 10400 PLURAL$ = " IS "
- 10410 QUADRANTX = FN R(1)
- 10420 QUADRANTY = FN R(1)
- 10430 SECTORX = FN R(1)
- 10440 SECTORY = FN R(1)
- 10450 FOR OO = 1 TO 9
- 10460 WARP.COOR(OO,1) = 0
- 10470 WARP.COOR(OO,2) = 0
- 10480 NEXT OO
- 10490 HOW.MUCH.DAMAGE = 0
- 10500 WARP.COOR(2,1) = - 1
- 10510 WARP.COOR(3,1) = - 1
- 10520 WARP.COOR(4,1) = - 1
- 10530 WARP.COOR(4,2) = - 1
- 10540 WARP.COOR(5,2) = - 1
- 10550 WARP.COOR(6,2) = - 1
- 10560 WARP.COOR(1,2) = 1
- 10570 WARP.COOR(2,2) = 1
- 10580 WARP.COOR(6,1) = 1
- 10590 WARP.COOR(7,1) = 1
- 10600 WARP.COOR(8,1) = 1
- 10610 WARP.COOR(8,2) = 1
- 10620 WARP.COOR(9,2) = 1
- 10630 FOR OO = 1 TO 8
- 10640 DAMAGE.STATS(OO) = 0
- 10650 NEXT OO
- 10660 COMMAND$ = "NAVSRSPHATORSHEDAMXXXHELGALCHG"
- 10670 FOR OO = 1 TO 10
- 10680 FOR OOO = 1 TO 10
- 10690 KLINGONS.IN.QUADRANT = 0
- 10700 GALAXY(OO,OOO) = 0
- 10710 RANDOM.NO.1 = RND(1)
- 10720 IF RANDOM.NO.1 < 0.9 THEN 10760
- 10730 KLINGONS.IN.QUADRANT = 3
- 10740 NO.OF.KLINGONS = NO.OF.KLINGONS + 3
- 10750 GOTO 10830
- 10760 IF RANDOM.NO.1 < 0.8 THEN 10800
- 10770 KLINGONS.IN.QUADRANT = 2
- 10780 NO.OF.KLINGONS = NO.OF.KLINGONS + 2
- 10790 GOTO 10830
- 10800 IF RANDOM.NO.1 < 0.75 THEN 10830
- 10810 KLINGONS.IN.QUADRANT = 1
- 10820 NO.OF.KLINGONS = NO.OF.KLINGONS + 1
- 10830 STARBASES.IN.QUADRANT = 0
- 10840 IF RND(1) < 0.97 THEN 10870
- 10850 STARBASES.IN.QUADRANT = 1
- 10860 NO.OF.STARBASES = NO.OF.STARBASES + 1
- 10870 GALAXY(OO,OOO) = KLINGONS.IN.QUADRANT * 100 + STARBASES.IN.QUADRANT * 10
- 10880 GALAXY(OO,OOO) = GALAXY(OO,OOO) + FN R(1)
- 10890 NEXT OOO
- 10900 NEXT OO
- 10910 IF NO.OF.KLINGONS > DAYS THEN 10930
- 10920 GOTO 10940
- 10930 DAYS = NO.OF.KLINGONS + 1
- 10940 IF NO.OF.STARBASES < > 0 THEN 11030
- 10950 IF GALAXY(QUADRANTX,QUADRANTY) < 200 THEN 10970
- 10960 GOTO 10990
- 10970 GALAXY(QUADRANTX,QUADRANTY) = GALAXY(QUADRANTX,QUADRANTY) + 100
- 10980 NO.OF.KLINGONS = NO.OF.KLINGONS + 1
- 10990 NO.OF.STARBASES = 1
- 11000 GALAXY(QUADRANTX,QUADRANTY) = GALAXY(QUADRANTX,QUADRANTY) + 10
- 11010 QUADRANTX = FN R(1)
- 11020 QUADRANTY = FN R(1)
- 11030 KLINGON.FOR.RATING = NO.OF.KLINGONS
- 11040 IF NO.OF.STARBASES < > 1 THEN 11060
- 11050 GOTO 11080
- 11060 SINGLE$ = "S"
- 11070 PLURAL$ = "ARE"
- 11080 PRINT "YOUR ORDERS ARE AS FOLLOWS:"
- 11090 PRINT "DESTROY THE";NO.OF.KLINGONS;"KLINGON WARSHIPS WHICH HAVE INVADED"
- 11100 PRINT " THE GALAXY BEFORE THEY CAN ATTACK FEDERATION HEADQUARTERS"
- 11110 PRINT "ON STARDATE";STARDATE.CONSTANT + DAYS;".";
- 11120 PRINT "THIS GIVES YOU";DAYS;"DAYS. THERE ";PLURAL$
- 11130 PRINT NO.OF.STARBASES;"STARBASE";SINGLE$;
- 11140 PRINT " IN THE GALAXY FOR RESUPPLYING YOUR SHIP."
- 11150 PRINT
- 11160 PRINT "HIT ANY KEY TO BEGIN YOUR COMMAND"
- 11170 WHILE INKEY$ = ""
- 11180 WEND
- 11190 QUADRANT.NAME = QUADRANTX
- 11200 QUADRANT.NO = QUADRANTY
- 11210 KLINGONS.IN.QUADRANT = 0
- 11220 STARBASES.IN.QUADRANT = 0
- 11230 STARS.IN.QUADRANT = 0
- 11240 MORE.DAMAGE = 0.5 * RND(1)
- 11250 GALAXY(QUADRANTX,QUADRANTY) = INT(GALAXY(QUADRANTX,QUADRANTY)) + 0.1
- 11260 IF QUADRANTX < 1 OR QUADRANTX > 10 THEN 11520
- 11270 IF QUADRANTY < 1 OR QUADRANTY > 10 THEN 11520
- 11280 GOSUB 19060
- 11290 PRINT
- 11300 IF STARDATE.CONSTANT < > STARDATE THEN 11340
- 11310 PRINT "YOUR MISSION BEGINS WITH YOUR STARSHIP LOCATED"
- 11320 PRINT "IN THE GALACTIC QUADRANT `";QUADRANT.NAME$;"'."
- 11330 GOTO 11360
- 11340 IF OUT.OF.GALAXY = 1 THEN 11370
- 11350 PRINT "NOW ENTERING ";QUADRANT.NAME$;" QUADRANT . . ."
- 11360 PRINT
- 11370 KLINGONS.IN.QUADRANT = INT(GALAXY(QUADRANTX,QUADRANTY) * 0.01)
- 11380 STARBASES.IN.QUADRANT = INT(GALAXY(QUADRANTX,QUADRANTY) * 0.1)
- 11390 STARBASES.IN.QUADRANT = STARBASES.IN.QUADRANT - 10 * KLINGONS.IN.QUADRANT
- 11400 STARS.IN.QUADRANT = GALAXY(QUADRANTX,QUADRANTY)
- 11410 STARS.IN.QUADRANT = STARS.IN.QUADRANT - 100 * KLINGONS.IN.QUADRANT
- 11420 STARS.IN.QUADRANT = STARS.IN.QUADRANT - 10 * STARBASES.IN.QUADRANT
- 11430 IF KLINGONS.IN.QUADRANT = 0 THEN 11480
- 11440 IF OUT.OF.GALAXY = 1 THEN 11480
- 11450 PRINT "COMBAT AREA CONDITION RED"
- 11460 IF SHIELDS > 200 THEN 11480
- 11470 PRINT " SHIELDS DANGEROUSLY LOW"
- 11480 FOR OO = 1 TO 3
- 11490 KLINGON.STATS(OO,1) = 0
- 11500 KLINGON.STATS(OO,2) = 0
- 11510 NEXT OO
- 11520 FOR OO = 1 TO 3
- 11530 KLINGON.STATS(OO,3) = 0
- 11540 NEXT OO
- 11550 QUADRANT$ = STRING$(300," ")
- 11560 ITEM$ = "<*>"
- 11570 STRING.SEARCH.1 = SECTORX
- 11580 STRING.SEARCH.2 = SECTORY
- 11590 GOSUB 18840
- 11600 IF KLINGONS.IN.QUADRANT < 1 THEN 11710
- 11610 FOR OO = 1 TO KLINGONS.IN.QUADRANT
- 11620 GOSUB 18760
- 11630 ITEM$ = "+++"
- 11640 STRING.SEARCH.1 = RANDOM.NO.1
- 11650 STRING.SEARCH.2 = RANDOM.NO.2
- 11660 GOSUB 18840
- 11670 KLINGON.STATS(OO,1) = RANDOM.NO.1
- 11680 KLINGON.STATS(OO,2) = RANDOM.NO.2
- 11690 KLINGON.STATS(OO,3) = KLINGON.SHIELDS * (0.5 * RND(1))
- 11700 NEXT OO
- 11710 IF STARBASES.IN.QUADRANT < 1 THEN 11770
- 11720 GOSUB 18760
- 11730 ITEM$ = ">|<"
- 11740 STRING.SEARCH.1 = RANDOM.NO.1
- 11750 STRING.SEARCH.2 = RANDOM.NO.2
- 11760 GOSUB 18840
- 11770 FOR OO = 1 TO STARS.IN.QUADRANT
- 11780 GOSUB 18760
- 11790 ITEM$ = " * "
- 11800 STRING.SEARCH.1 = RANDOM.NO.1
- 11810 STRING.SEARCH.2 = RANDOM.NO.2
- 11820 GOSUB 18840
- 11830 NEXT OO
- 11840 GOSUB 17030
- 11850 IF SHIELDS + ENERGY > 10 THEN 11910
- 11860 IF ENERGY > 10 OR DAMAGE.STATS(7) = 0 THEN 11910
- 11870 PRINT "SHIP STRANDED IN SPACE. YOU HAVE INSUFFICIENT ENERGY TO"
- 11880 PRINT "MANEUVER. SHIELDS CANNOT BE CROSS-CIRCUITED"
- 11890 GOTO 16870
- 11900 PRINT "TYPE 'HEL' FOR HELP"
- 11910 PRINT "COMMAND ";
- 11920 LINE INPUT COMM$
- 11930 IF COMM$ = "" THEN 11900
- 11940 C$ = MID$(COMM$,1,3)
- 11950 OO = INSTR(COMMAND$,C$)
- 11960 IF LEN(COMM$) < 4 THEN 11980
- 11970 COMM$ = FN B$(3)
- 11980 IF OO = 0 THEN 11900
- 11990 OO = (OO + 2) / 3
- 12000 ON OO GOTO 12180,11840,14390,14990,16090
- 12010 ON OO - 5 GOTO 16310,16930,12020,18350,19130
- 12020 PRINT "TYPE ONE OF THE FOLLOWING:"
- 12030 PRINT "NAV - SET COURSE"
- 12040 PRINT "SRS - SHORT RANGE SENSOR SCAN"
- 12050 PRINT "PHA - FIRE LASERS"
- 12060 PRINT "TOR - FIRE PHOTON TORPEDOES"
- 12070 PRINT "SHE - RAISE OR LOWER SHEILDS"
- 12080 PRINT "DAM - REPAIR DAMAGE WHEN DOCKED"
- 12090 PRINT "GAL - CUMULATIVE GALAXY RECORD"
- 12100 PRINT "XXX - TO RESIGN YOUR COMMAND"
- 12110 PRINT "ALTERNATE FORMS: WHERE <STATEMENT> IS ANY LEGAL NUMBER."
- 12120 PRINT "NAV<COURSE>,<WARP FACTOR>"
- 12130 PRINT "PHA<ENERGY>"
- 12140 PRINT "TOR<DIRECTION>"
- 12150 PRINT "SHE<ENERGY>"
- 12160 PRINT
- 12170 GOTO 11850
- 12180 IF COMM$ = "NAV" THEN 12230
- 12190 GOSUB 19670
- 12200 COURSE = VQ
- 12210 IF OUT.OF.GALAXY = 1 AND COURSE < > INT(COURSE) THEN 12300
- 12220 ON ISH + 1 GOTO 11900,12260,12230,12320
- 12230 PRINT "COURSE";
- 12240 INPUT COURSE
- 12250 IF OUT.OF.GALAXY = 1 AND COURSE < > INT(COURSE) THEN 12300
- 12260 IF COURSE = 9 THEN 12280
- 12270 GOTO 12290
- 12280 COURSE = 1
- 12290 IF COURSE > = 1 AND COURSE < 9 THEN 12370
- 12300 PRINT "INCORRECT COURSE DATA"
- 12310 GOTO 11850
- 12320 IF COURSE > = 1 AND COURSE < 9 THEN 12340
- 12330 GOTO 12300
- 12340 GOSUB 19670
- 12350 WARP.SPEED = VQ
- 12360 ON ISH + 1 GOTO 11900,12490,12370,11900
- 12370 SINGLE$ = "10"
- 12380 IF DAMAGE.STATS(1) < 0 THEN 12400
- 12390 GOTO 12410
- 12400 SINGLE$ = ".5"
- 12410 IF OUT.OF.GALAXY = 0 THEN 12440
- 12420 PRINT "WARP FACTOR";
- 12430 GOTO 12450
- 12440 PRINT "WARP FACTOR (0-";SINGLE$;")";
- 12450 INPUT WARP.SPEED
- 12460 IF OUT.OF.GALAXY = 1 THEN 14060
- 12470 IF DAMAGE.STATS(1) < 0 AND WARP.SPEED > 0.5 THEN 12550
- 12480 GOTO 12510
- 12490 IF OUT.OF.GALAXY = 0 AND DAMAGE.STATS(1) < 0 AND WARP.SPEED > 0.5 THEN 12550
- 12500 IF OUT.OF.GALAXY = 1 THEN 14060
- 12510 IF WARP.SPEED > 0 AND WARP.SPEED < = 10 THEN 12570
- 12520 IF WARP.SPEED = 0 THEN 11850
- 12530 PRINT "THE ENGINES WONT TAKE WARP ";WARP.SPEED;"!"
- 12540 GOTO 11850
- 12550 PRINT "WARP ENGINES DAMAGED. MAX. WARP SPEED IS 0.5"
- 12560 GOTO 11850
- 12570 N = INT(WARP.SPEED * 10 + 0.5)
- 12580 IF ENERGY - N > 0 THEN 12630
- 12590 PRINT "INSUFFICIENT ENERGY FOR MOVING AT WARP ";WARP.SPEED
- 12600 IF SHIELDS < N - ENERGY OR DAMAGE.STATS(7) < 0 THEN 11850
- 12610 PRINT SHIELDS;"UNITS OF ENERGY DEPLOYED TO SHIELDS"
- 12620 GOTO 11850
- 12630 FOR OO = 1 TO KLINGONS.IN.QUADRANT
- 12640 IF KLINGON.STATS(OO,3) = 0 THEN 12740
- 12650 ITEM$ = " "
- 12660 STRING.SEARCH.1 = KLINGON.STATS(OO,1)
- 12670 STRING.SEARCH.2 = KLINGON.STATS(OO,2)
- 12680 GOSUB 18840
- 12690 GOSUB 18760
- 12700 KLINGON.STATS(OO,1) = STRING.SEARCH.1
- 12710 KLINGON.STATS(OO,2) = STRING.SEARCH.2
- 12720 ITEM$ = "+++"
- 12730 GOSUB 18840
- 12740 NEXT OO
- 12750 GOSUB 16640
- 12760 MARK.IT = 0
- 12770 ADD.DAMAGE = WARP.SPEED
- 12780 IF WARP.SPEED > = 1 THEN 12800
- 12790 GOTO 12810
- 12800 ADD.DAMAGE = 1
- 12810 FOR OO = 1 TO 8
- 12820 IF DAMAGE.STATS(OO) > = 0 THEN 12960
- 12830 DAMAGE.STATS(OO) = DAMAGE.STATS(OO) + ADD.DAMAGE
- 12840 IF DAMAGE.STATS(OO) > - 0.1 AND DAMAGE.STATS(OO) < 0 THEN 12860
- 12850 GOTO 12880
- 12860 DAMAGE.STATS(OO) = - 0.1
- 12870 GOTO 12960
- 12880 IF DAMAGE.STATS(OO) < 0 THEN 12960
- 12890 IF MARK.IT < > 1 THEN 12910
- 12900 GOTO 12930
- 12910 MARK.IT = 1
- 12920 PRINT "DAMAGE CONTROL REPORT: ";
- 12930 RANDOM.NO.1 = OO
- 12940 PRINT DEVICE$(RANDOM.NO.1);" REPAIR COMPLETED."
- 12950 GOSUB 18730
- 12960 NEXT OO
- 12970 IF RND(1) > 0.2 THEN 13110
- 12980 RANDOM.NO.1 = INT( RND(1) * 8 + 1)
- 12990 IF RND(1) > 0.6 THEN 13060
- 13000 DAMAGE.STATS(RANDOM.NO.1) = DAMAGE.STATS(RANDOM.NO.1) - ( RND(1) * 5 + 1)
- 13010 PRINT "DAMAGE CONTROL REPORT: ";
- 13020 PRINT DEVICE$(RANDOM.NO.1);" DAMAGED."
- 13030 PRINT
- 13040 GOSUB 18730
- 13050 GOTO 13110
- 13060 DAMAGE.STATS(RANDOM.NO.1) = DAMAGE.STATS(RANDOM.NO.1) + RND(1) * 3 + 1
- 13070 PRINT "DAMAGE CONTROL REPORT: ";
- 13080 PRINT DEVICE$(RANDOM.NO.1);" STATE OF REPAIR IMPROVED."
- 13090 PRINT
- 13100 GOSUB 18730
- 13110 ITEM$ = " "
- 13120 STRING.SEARCH.1 = INT(SECTORX)
- 13130 STRING.SEARCH.2 = INT(SECTORY)
- 13140 GOSUB 18840
- 13150 SAVER1 = WARP.COOR( INT(COURSE),1)
- 13160 SAVER1.1 = INT(COURSE)
- 13170 SAVER1.2 = COURSE - SAVER1.1
- 13180 SAVER1 = SAVER1 + (WARP.COOR(SAVER1.1 + 1,1) - SAVER1) * SAVER1.2
- 13190 X = SECTORX
- 13200 Y = SECTORY
- 13210 SAVER2 = WARP.COOR( INT(COURSE),2)
- 13220 SAVER2.1 = INT(COURSE)
- 13230 SAVER2.2 = COURSE - SAVER2.1
- 13240 SAVER2 = SAVER2 + (WARP.COOR(SAVER2.1 + 1,2) - SAVER2) * SAVER2.2
- 13250 SAVEX = QUADRANTX
- 13260 SAVEY = QUADRANTY
- 13270 FOR OO = 1 TO N
- 13280 SECTORX = SECTORX + SAVER1
- 13290 SECTORY = SECTORY + SAVER2
- 13300 IF SECTORX < 1 OR SECTORX > = 11 THEN 13540
- 13310 IF SECTORY < 1 OR SECTORY > = 11 THEN 13540
- 13320 PUT.IN = INT(SECTORX) * 30 + INT(SECTORY) * 3 - 32
- 13330 IF MID$(QUADRANT$,PUT.IN,2) = " " THEN 13390
- 13340 SECTORX = INT(SECTORX - SAVER1)
- 13350 SECTORY = INT(SECTORY - SAVER2)
- 13360 PRINT "WARP ENGINES SHUT DOWN AT ";
- 13370 PRINT "SECTOR";SECTORX;",";SECTORY;"DUE TO BAD NAVIGATION."
- 13380 GOTO 13420
- 13390 NEXT OO
- 13400 SECTORX = INT(SECTORX)
- 13410 SECTORY = INT(SECTORY)
- 13420 ITEM$ = "<*>"
- 13430 STRING.SEARCH.1 = INT(SECTORX)
- 13440 STRING.SEARCH.2 = INT(SECTORY)
- 13450 GOSUB 18840
- 13460 GOSUB 14180
- 13470 ADD.TIME = 1
- 13480 IF WARP.SPEED < 1 THEN 13500
- 13490 GOTO 13510
- 13500 ADD.TIME = 0.1 * INT(WARP.SPEED * 10)
- 13510 STARDATE = STARDATE + ADD.TIME
- 13520 IF STARDATE > STARDATE.CONSTANT + DAYS THEN 16870
- 13530 GOTO 11840
- 13540 X = 10 * QUADRANTX + X + N * SAVER1
- 13550 Y = 10 * QUADRANTY + Y + N * SAVER2
- 13560 QUADRANTX = INT(X / 10)
- 13570 QUADRANTY = INT(Y / 10)
- 13580 SECTORX = INT(X - QUADRANTX * 10)
- 13590 SECTORY = INT(Y - QUADRANTY * 10)
- 13600 CHECKER = 0
- 13610 IF SECTORX = 0 THEN 13630
- 13620 GOTO 13650
- 13630 QUADRANTX = QUADRANTX - 1
- 13640 SECTORX = 10
- 13650 IF SECTORY = 0 THEN 13670
- 13660 GOTO 13710
- 13670 QUADRANTY = QUADRANTY - 1
- 13680 OUT.OF.GALAXY = 0
- 13690 GOTO 11190
- 13700 SECTORY = 10
- 13710 IF QUADRANTX < 1 THEN 13730
- 13720 GOTO 13760
- 13730 CHECKER = 1
- 13740 QUADRANTX = 1
- 13750 SECTORX = 1
- 13760 IF QUADRANTX > 10 THEN 13780
- 13770 GOTO 13810
- 13780 CHECKER = 1
- 13790 QUADRANTX = 10
- 13800 SECTORX = 10
- 13810 IF QUADRANTY < 1 THEN 13830
- 13820 GOTO 13860
- 13830 CHECKER = 1
- 13840 SECTORY = 1
- 13850 QUADRANTY = 1
- 13860 IF QUADRANTY > 10 THEN 13880
- 13870 GOTO 13910
- 13880 CHECKER = 1
- 13890 QUADRANTY = 10
- 13900 SECTORY = 10
- 13910 IF CHECKER = 0 THEN 14020
- 13920 PRINT "GALAXY BORDER REACHED."
- 13930 HYPERX = INT( RND(1) * 10000 + 5000)
- 13940 HYPERY = INT( RND(1) * 10000 + 5000)
- 13950 PRINT "ENTERING HYPERSPACE AT COORDINATES";HYPERX;",";HYPERY
- 13960 OUT.OF.GALAXY = 1
- 13970 ITEM$ = " "
- 13980 STRING.SEARCH.1 = QUADRANTX
- 13990 STRING.SEARCH.2 = QUADRANTY
- 14000 GOSUB 18840
- 14010 IF STARDATE > STARDATE.CONSTANT + DAYS THEN 16870
- 14020 IF 10 * QUADRANTX + QUADRANTY = 10 * SAVEX + SAVEY THEN 13420
- 14030 STARDATE = STARDATE + 1
- 14040 GOSUB 14180
- 14050 GOTO 11190
- 14060 HYPER1.1 = ABS(COURSE = 1 OR COURSE = 2 OR COURSE = 8)
- 14070 HYPER1.2 = ABS(COURSE = 4 OR COURSE = 5 OR COURSE = 6)
- 14080 HYPER1.3 = ABS(COURSE = 2 OR COURSE = 3 OR COURSE = 4)
- 14090 HYPER1.4 = ABS(COURSE = 6 OR COURSE = 7 OR COURSE = 8)
- 14100 HYPERX = HYPERX + WARP.SPEED * HYPER1.1
- 14110 HYPERX = HYPERX - WARP.SPEED * HYPER1.2
- 14120 HYPERY = HYPERY + WARP.SPEED * HYPER1.3
- 14130 HYPERY = HYPERY - WARP.SPEED * HYPER1.4
- 14140 IF HYPERX = 0 AND HYPERY = 0 THEN 14160
- 14150 GOTO 11910
- 14160 OUT.OF.GALAXY = 0
- 14170 GOTO 11190
- 14180 ENERGY = ENERGY - N - 10
- 14190 IF ENERGY > = 0 THEN RETURN
- 14200 PRINT "SHIELD CONTROL SUPPLIES ENERGY TO COMPLETE THE MANEUVER."
- 14210 SHIELDS = SHIELDS + ENERGY
- 14220 IF SHIELDS < = 0 THEN 14240
- 14230 GOTO 14250
- 14240 SHIELDS = 0
- 14250 RETURN
- 14260 IF DAMAGE.STATS(3) < 0 THEN 14280
- 14270 GOTO 14300
- 14280 PRINT "LONG RANGE SENSORS ARE INOPERABLE."
- 14290 GOTO 14370
- 14300 FOR OO = QUADRANTX - 1 TO QUADRANTX + 1
- 14310 FOR OOO = QUADRANTY - 1 TO QUADRANTY + 1
- 14320 IF OO > 0 AND OO < 11 AND OOO > 0 AND OOO < 11 THEN 14340
- 14330 GOTO 14350
- 14340 GALAXY(OO,OOO) = INT(GALAXY(OO,OOO)) + 0.1
- 14350 NEXT OOO
- 14360 NEXT OO
- 14370 GOSUB 18410
- 14380 RETURN
- 14390 IF DAMAGE.STATS(4) < 0 THEN 14410
- 14400 GOTO 14430
- 14410 PRINT "PHASERS INOPERATIVE"
- 14420 GOTO 11850
- 14430 IF KLINGONS.IN.QUADRANT > 0 THEN 14460
- 14440 PRINT "NO ENEMY SHIPS IN THIS QUADRANT"
- 14450 GOTO 11850
- 14460 IF DAMAGE.STATS(8) < 0 THEN 14480
- 14470 GOTO 14490
- 14480 PRINT "COMPUTER FAILURE HAMPERS ACCURACY."
- 14490 IF COMM$ = "PHA" THEN 14550
- 14500 GOSUB 19670
- 14510 X = VQ
- 14520 ON ISH + 1 GOTO 11900,14580,14550,11900
- 14530 PRINT "PHASERS LOCKED ON TARGET:";
- 14540 PRINT ENERGY;"UNITS OF ENERGY AVAILABLE"
- 14550 PRINT "NUMBER OF UNITS TO FIRE";
- 14560 INPUT X
- 14570 IF X < = 0 THEN 11850
- 14580 IF ENERGY - X < = 0 THEN 14540
- 14590 ENERGY = ENERGY - X
- 14600 IF DAMAGE.STATS(7) < 0 THEN 14620
- 14610 GOTO 14630
- 14620 X = X * RND(1)
- 14630 H1 = INT(X / KLINGONS.IN.QUADRANT)
- 14640 FOR OO = 1 TO 3
- 14650 IF KLINGON.STATS(OO,3) < = 0 THEN 14960
- 14660 H = INT((H1 / FN D(1)) * ( RND(1) + 2))
- 14670 IF H > 0.15 * KLINGON.STATS(OO,3) THEN 14710
- 14680 PRINT "SENSORS SHOW NO DAMAGE TO ENEMY AT";
- 14690 PRINT KLINGON.STATS(OO,1);",";KLINGON.STATS(OO,2)
- 14700 GOTO 14960
- 14710 KLINGON.STATS(OO,3) = KLINGON.STATS(OO,3) - H
- 14720 PRINT H;"UNITS HIT ON KLINGON AT SECTOR:";
- 14730 PRINT KLINGON.STATS(OO,1);",";KLINGON.STATS(OO,2)
- 14740 IF KLINGON.STATS(OO,3) < = 0 THEN 14760
- 14750 GOTO 14850
- 14760 BEEP
- 14770 COLOR 4
- 14780 PRINT "*** ";
- 14790 COLOR 7
- 14800 PRINT "KLINGON DESTROYED ";
- 14810 COLOR 4
- 14820 PRINT "***"
- 14830 COLOR 7
- 14840 GOTO 14870
- 14850 PRINT "SENSORS SHOW";KLINGON.STATS(I,3);"UNITS REMAINING"
- 14860 GOTO 14960
- 14870 KLINGONS.IN.QUADRANT = KLINGONS.IN.QUADRANT - 1
- 14880 NO.OF.KLINGONS = NO.OF.KLINGONS - 1
- 14890 STRING.SEARCH.1 = KLINGON.STATS(OO,1)
- 14900 STRING.SEARCH.2 = KLINGON.STATS(OO,2)
- 14910 ITEM$ = " "
- 14920 GOSUB 18840
- 14930 KLINGON.STATS(OO,3) = 0
- 14940 GALAXY(QUADRANTX,QUADRANTY) = GALAXY(QUADRANTX,QUADRANTY) - 100
- 14950 IF NO.OF.KLINGONS < = 0 THEN 16990
- 14960 NEXT OO
- 14970 GOSUB 16640
- 14980 GOTO 11850
- 14990 IF TORPEDOES < = 0 THEN 15010
- 15000 GOTO 15030
- 15010 PRINT "PHOTON TORPEDOES EXPENDED."
- 15020 GOTO 11850
- 15030 IF DAMAGE.STATS(5) < 0 THEN 15050
- 15040 GOTO 15070
- 15050 PRINT "PHOTON TUBES NOT OPERATIONAL."
- 15060 GOTO 11850
- 15070 IF COMM$ = "TOR" THEN 15110
- 15080 GOSUB 19670
- 15090 COURSE = VQ
- 15100 ON ISH + 1 GOTO 11900,15130,15110,11900
- 15110 PRINT "PHOTON TORPEDOE COURSE";
- 15120 INPUT COURSE
- 15130 IF COURSE = 9 THEN 15150
- 15140 GOTO 15160
- 15150 COURSE = 1
- 15160 IF COURSE > = 1 AND COURSE < 9 THEN 15190
- 15170 PRINT "INCORRECT COURSE DATA"
- 15180 GOTO 11850
- 15190 SAVER1 = WARP.COOR( INT(COURSE),1)
- 15200 SAVER1.1 = INT(COURSE)
- 15210 SAVER1.2 = COURSE - SAVER1.1
- 15220 SAVER1 = SAVER1 + (WARP.COOR(SAVER1.1 + 1,1) - SAVER1) * SAVER1.2
- 15230 ENERGY = ENERGY - 10
- 15240 TORPEDOES = TORPEDOES - 1
- 15250 SAVER2 = WARP.COOR( INT(COURSE),2)
- 15260 SAVER2.1 = INT(COURSE)
- 15270 SAVER2.2 = COURSE - SAVER2.1
- 15280 SAVER2 = SAVER2 + (WARP.COOR(SAVER2.1 + 1,2) - SAVER2) * SAVER2.2
- 15290 X = SECTORX
- 15300 Y = SECTORY
- 15310 PRINT "TORPEDOE TRACK:"
- 15320 X = X + SAVER1
- 15330 Y = Y + SAVER2
- 15340 COORDINATEX = INT(X + 0.5)
- 15350 COORDINATEY = INT(Y + 0.5)
- 15360 IF COORDINATEX < 1 OR COORDINATEX > 10 THEN 16060
- 15370 IF COORDINATEY < 1 OR COORDINATEY > 10 THEN 16060
- 15380 PRINT " ";COORDINATEX;",";COORDINATEY
- 15390 ITEM$ = " "
- 15400 STRING.SEARCH.1 = X
- 15410 STRING.SEARCH.2 = Y
- 15420 GOSUB 18990
- 15430 IF FIND < > 0 THEN 15320
- 15440 ITEM$ = "+++"
- 15450 STRING.SEARCH.1 = X
- 15460 STRING.SEARCH.2 = Y
- 15470 GOSUB 18990
- 15480 IF FIND = 0 THEN 15680
- 15490 BEEP
- 15500 COLOR 4
- 15510 PRINT "*** ";
- 15520 COLOR 7
- 15530 PRINT "KLINGON DESTROYED ";
- 15540 COLOR 4
- 15550 PRINT "***"
- 15560 COLOR 7
- 15570 KLINGONS.IN.QUADRANT = KLINGONS.IN.QUADRANT - 1
- 15580 NO.OF.KLINGONS = NO.OF.KLINGONS - 1
- 15590 IF NO.OF.KLINGONS < = 0 THEN 16990
- 15600 FOR OO = 1 TO 3
- 15610 TESTERX = KLINGON.STATS(OO,1)
- 15620 TESTERY = KLINGON.STATS(OO,2)
- 15630 IF COORDINATEX = TESTERX AND COORDINATEY = TESTERY THEN 15660
- 15640 NEXT OO
- 15650 OO = 3
- 15660 KLINGON.STATS(OO,3) = 0
- 15670 GOTO 15960
- 15680 ITEM$ = " * "
- 15690 STRING.SEARCH.1 = X
- 15700 STRING.SEARCH.2 = Y
- 15710 GOSUB 18990
- 15720 IF FIND = 0 THEN 15760
- 15730 PRINT "STAR AT";COORDINATEX;",";COORDINATEY;"ABSORBED TORPEDOE ENERGY"
- 15740 GOSUB 16640
- 15750 GOTO 11850
- 15760 ITEM$ = ">|<"
- 15770 STRING.SEARCH.1 = X
- 15780 STRING.SEARCH.2 = Y
- 15790 GOSUB 18990
- 15800 IF FIND = 0 THEN 14960
- 15810 COLOR 4
- 15820 PRINT "*** ";
- 15830 COLOR 7
- 15840 PRINT "STARBASE DESTROYED ";
- 15850 COLOR 4
- 15860 PRINT "***"
- 15870 COLOR 7
- 15880 STARBASES.IN.QUADRANT = STARBASES.IN.QUADRANT - 1
- 15890 NO.OF.STARBASES = NO.OF.STARBASES - 1
- 15900 IF NO.OF.STARBASES = 0 THEN 15940
- 15910 IF NO.OF.KLINGONS > T - STARDATE.CONSTANT - DAYS THEN 15940
- 15920 PRINT "YOU ARE HEREBY SENTENCED TO 99 STARDATES HARD LABOR ON CYGNUS 12"
- 15930 GOTO 16930
- 15940 PRINT "STARFLEET COMMEND REVIEWING YOUR RECORD TO CONSIDER COURT MARTIAL"
- 15950 ANY.DAMAGE = 0
- 15960 STRING.SEARCH.1 = X
- 15970 STRING.SEARCH.2 = Y
- 15980 ITEM$ = " "
- 15990 GOSUB 18840
- 16000 VARIABLE = KLINGONS.IN.QUADRANT * 100
- 16010 VARIABLE = VARIABLE + STARBASES.IN.QUADRANT * 10
- 16020 VARIABLE = VARIABLE + STARS.IN.QUADRANT + 0.1
- 16030 GALAXY(QUADRANTX,QUADRANTY) = VARIABLE
- 16040 GOSUB 16640
- 16050 GOTO 11850
- 16060 PRINT "TORPEDOE MISSED"
- 16070 GOSUB 16640
- 16080 GOTO 11850
- 16090 IF DAMAGE.STATS(7) < 0 THEN 16110
- 16100 GOTO 16130
- 16110 PRINT "SHIELD CONTROL INOPERABLE."
- 16120 GOTO 11850
- 16130 PRINT ENERGY + SHIELDS;"UNITS OF ENERGY AVAILABLE"
- 16140 IF COMM$ = "SHE" THEN 16180
- 16150 GOSUB 19670
- 16160 X = VQ
- 16170 ON ISH + 1 GOTO 11900,16200,16180,11900
- 16180 PRINT "NUMBER OF UNITS TO SHIELDS";
- 16190 INPUT X
- 16200 IF X < 0 OR X = SHIELDS THEN 16220
- 16210 GOTO 16240
- 16220 PRINT "SHIELDS UNCHANGED."
- 16230 GOTO 11850
- 16240 IF X < = ENERGY + SHIELDS THEN 16270
- 16250 PRINT "NOT ENOUGH UNITS OF ENERGY AVAILABLE"
- 16260 GOTO 11850
- 16270 ENERGY = ENERGY + SHIELDS - X
- 16280 SHIELDS = X
- 16290 PRINT "SHIELDS NOW A"; INT(SHIELDS);"UNITS."
- 16300 GOTO 11850
- 16310 IF ANY.DAMAGE = 0 THEN 16330
- 16320 GOTO 16360
- 16330 PRINT "THE ENTERPRISE IS NOT DOCKED TO A STARBASE"
- 16340 PRINT "NO REPAIRS CAN BE MADE"
- 16350 GOTO 11850
- 16360 HOW.MUCH.DAMAGE = 0
- 16370 FOR OO = 1 TO 8
- 16380 IF DAMAGE.STATS(OO) < 0 THEN 16400
- 16390 GOTO 16410
- 16400 HOW.MUCH.DAMAGE = HOW.MUCH.DAMAGE + 0.1
- 16410 NEXT OO
- 16420 IF HOW.MUCH.DAMAGE = 0 THEN 16440
- 16430 GOTO 16460
- 16440 PRINT "THERE ARE NO DEVICES IN NEED OF REPAIR"
- 16450 GOTO 11850
- 16460 PRINT
- 16470 HOW.MUCH.DAMAGE = HOW.MUCH.DAMAGE + MORE.DAMAGE
- 16480 IF HOW.MUCH.DAMAGE > = 1 THEN 16500
- 16490 GOTO 16510
- 16500 HOW.MUCH.DAMAGE = 0.9
- 16510 PRINT "STANDBY TO EFFECT REPAIRS ON YOUR SHIP"
- 16520 PRINT "ESTIMATED TIME TO REPAIR:";0.01 * INT(100 * HOW.MUCH.DAMAGE);
- 16530 PRINT "STARDATES"
- 16540 PRINT "WILL YOU AUTHORIZE THE REPAIR (Y/N)";
- 16550 INPUT QUESTION$
- 16560 IF QUESTION$ < > "Y" THEN 11850
- 16570 FOR OO = 1 TO 8
- 16580 IF DAMAGE.STATS(OO) < 0 THEN 16600
- 16590 GOTO 16610
- 16600 DAMAGE.STATS(OO) = 0
- 16610 NEXT OO
- 16620 STARDATE = STARDATE + HOW.MUCH.DAMAGE + 0.1
- 16630 GOTO 11850
- 16640 IF KLINGONS.IN.QUADRANT < = 0 THEN RETURN
- 16650 IF ANY.DAMAGE < > 0 THEN 16670
- 16660 GOTO 16690
- 16670 PRINT "STARBASE SHIELDS PROTECT THE ENTERPRISE."
- 16680 RETURN
- 16690 FOR OO = 1 TO 3
- 16700 IF KLINGON.STATS(OO,3) < = 0 THEN 16850
- 16710 H = INT((KLINGON.STATS(OO,3) / FN D(1)) * (2 + RND(1)))
- 16720 SHIELDS = SHIELDS - H
- 16730 KLINGON.STATS(OO,3) = KLINGON.STATS(OO,3) / (3 + RND(0))
- 16740 PRINT H;"UNITS HIT ON ENTERPRISE FROM SECTOR";
- 16750 PRINT KLINGON.STATS(OO,1);",";KLINGON.STATS(OO,2)
- 16760 IF SHIELDS < = 0 THEN 16890
- 16770 PRINT "SHIELDS DOWN TO";SHIELDS;"UNITS"
- 16780 IF H < 20 THEN 16850
- 16790 IF RND(1) > 0.6 OR H / SHIELDS < 0.02 THEN 16850
- 16800 RANDOM.NO.1 = INT( RND(1) * 8 + 1)
- 16810 DAMAGE.SAVER = DAMAGE.STATS(RANDOM.NO.1)
- 16820 DAMAGE.STATS(RANDOM.NO.1) = DAMAGE.SAVER - H / SHIELDS - 0.5 * RND(1)
- 16830 PRINT "DAMAGE CONTROL REPORTS `";DEVICE$(RANDOM.NO.1);
- 16840 PRINT "' DAMAGED BY THE HIT"
- 16850 NEXT OO
- 16860 RETURN
- 16870 PRINT "IT IS STARDATE";STARDATE
- 16880 GOTO 16930
- 16890 PRINT
- 16900 PRINT "THE ENTERPRISE HAS BEEN DESTROYED."
- 16910 PRINT "THE FEDERATION WILL BE CONQUERED"
- 16920 GOTO 16870
- 16930 PRINT "THERE WERE";NO.OF.KLINGONS;"KLINGON BATTLE CRUISERS"
- 16940 PRINT "LEFT AT THE END OF YOUR MISSION."
- 16950 PRINT "AGAIN (Y/N)";
- 16960 INPUT QUESTION$
- 16970 IF QUESTION$ = "Y" THEN 10090
- 16980 END
- 16990 PRINT "THE LAST KLINGON BATTLE CRUISER HAS BEEN DESTROYED"
- 17000 PRINT "YOUR EFFICIENCY RATING IS";
- 17010 PRINT 1000 * (KLINGON.FOR.RATING / (T - STARDATE.CONSTANT)) ^ 2
- 17020 GOTO 16950
- 17030 IF OUT.OF.GALAXY = 0 THEN 17060
- 17040 PRINT "COORDINATES ";HYPERX;",";HYPERY
- 17050 RETURN
- 17060 GOSUB 14260
- 17070 PRINT
- 17080 FOR OO = SECTORX - 1 TO SECTORX + 1
- 17090 FOR OOO = SECTORY - 1 TO SECTORY + 1
- 17100 IF INT(OO + 0.5) < 1 OR INT(OO + 0.5) > 10 THEN 17170
- 17110 IF INT(OOO + 0.5) < 1 OR INT(OOO + 0.5) > 10 THEN 17170
- 17120 ITEM$ = ">|<"
- 17130 STRING.SEARCH.1 = OO
- 17140 STRING.SEARCH.2 = OOO
- 17150 GOSUB 18990
- 17160 IF FIND = 1 THEN 17210
- 17170 NEXT OOO
- 17180 NEXT OO
- 17190 ANY.DAMAGE = 0
- 17200 GOTO 17280
- 17210 ANY.DAMAGE = 1
- 17220 C$ = "DOCKED"
- 17230 ENERGY = ENERGY.CONSTANT
- 17240 TORPEDOES = TORPEDOE.CONSTANT
- 17250 PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES"
- 17260 SHIELDS = 0
- 17270 GOTO 17360
- 17280 IF KLINGONS.IN.QUADRANT > 0 THEN 17300
- 17290 GOTO 17320
- 17300 C$ = " RED"
- 17310 GOTO 17360
- 17320 C$ = " GREEN"
- 17330 IF ENERGY < ENERGY.CONSTANT * 0.1 THEN 17350
- 17340 GOTO 17360
- 17350 C$ = "YELLOW"
- 17360 IF DAMAGE.STATS(2) > = 0 THEN 17430
- 17370 PRINT
- 17380 PRINT "SHORT RANGE SENSORS ARE OUT"
- 17390 PRINT
- 17400 IF DAMAGE.STATS(3) < 0 THEN 17420
- 17410 GOSUB 19200
- 17420 RETURN
- 17430 O1$ = STRING$(40,"-")
- 17440 PRINT O1$;
- 17450 IF DAMAGE.STATS(3) < 0 THEN 17500
- 17460 PRINT STRING$(19," ");
- 17470 COLOR 4
- 17480 PRINT MID$(O1$,1,13);
- 17490 COLOR 7
- 17500 PRINT
- 17510 FOR OO = 1 TO 10
- 17520 FOR OOO = (OO - 1) * 30 + 1 TO (OO - 1) * 30 + 28 STEP 3
- 17530 PRINT " ";
- 17540 VE$ = MID$(QUADRANT$,OOO,3)
- 17550 IF VE$ = " * " THEN 17570
- 17560 GOTO 17600
- 17570 COLOR 15
- 17580 PRINT VE$;
- 17590 GOTO 17750
- 17600 IF VE$ = "+++" THEN 17620
- 17610 GOTO 17650
- 17620 COLOR 4
- 17630 PRINT VE$;
- 17640 GOTO 17750
- 17650 IF VE$ = ">|<" THEN 17670
- 17660 GOTO 17700
- 17670 COLOR 1
- 17680 PRINT VE$;
- 17690 GOTO 17750
- 17700 IF VE$ = "<*>" THEN 17730
- 17710 PRINT " ";
- 17720 GOTO 17750
- 17730 COLOR 14
- 17740 PRINT VE$;
- 17750 NEXT OOO
- 17760 COLOR 7
- 17770 ON OO GOTO 17790,17840,17910,17980,18080,18130,18210,18240,18270,18300
- 17780 PRINT
- 17790 PRINT " STARDATE ";
- 17800 PRINT USING "#####"; INT(STARDATE);
- 17810 Z7 = - 1
- 17820 GOSUB 19500
- 17830 GOTO 18320
- 17840 PRINT " CONDITION "; MID$(C$,1,6);
- 17850 IF DAMAGE.STATS(3) < 0 THEN 17890
- 17860 COLOR 4
- 17870 PRINT STRING$(13,"-");
- 17880 COLOR 7
- 17890 PRINT
- 17900 GOTO 18320
- 17910 PRINT " QUADRANT ";
- 17920 PRINT USING "##";QUADRANTX;
- 17930 PRINT ",";
- 17940 PRINT USING "##";QUADRANTY;
- 17950 Z7 = 0
- 17960 GOSUB 19500
- 17970 GOTO 18320
- 17980 PRINT " SECTOR ";
- 17990 PRINT USING "##";SECTORX;
- 18000 PRINT ",";
- 18010 PRINT USING "##";SECTORY;
- 18020 IF DAMAGE.STATS(3) < 0 THEN 18060
- 18030 COLOR 4
- 18040 PRINT STRING$(13,"-");
- 18050 COLOR 7
- 18060 PRINT
- 18070 GOTO 18320
- 18080 PRINT " TORPEDOES ";
- 18090 PRINT USING "#####"; INT(TORPEDOES);
- 18100 Z7 = 1
- 18110 GOSUB 19500
- 18120 GOTO 18320
- 18130 PRINT " TOTAL ENERGY ";
- 18140 PRINT USING "#####"; INT(ENERGY + SHIELDS);
- 18150 IF DAMAGE.STATS(3) < 0 THEN 18190
- 18160 COLOR 4
- 18170 PRINT STRING$(13,"-");
- 18180 COLOR 7
- 18190 PRINT
- 18200 GOTO 18320
- 18210 PRINT " SHIELDS ";
- 18220 PRINT USING "#####"; INT(SHIELDS)
- 18230 GOTO 18320
- 18240 PRINT " KLINGONS ";
- 18250 PRINT USING "#####"; INT(NO.OF.KLINGONS)
- 18260 GOTO 18320
- 18270 VS = 1
- 18280 GOSUB 19310
- 18290 GOTO 18320
- 18300 VS = 5
- 18310 GOSUB 19310
- 18320 NEXT OO
- 18330 PRINT O1$
- 18340 RETURN
- 18350 IF OUT.OF.GALAXY = 1 THEN 11850
- 18360 SCREEN 0,1,2,2
- 18370 WHILE INKEY$ = ""
- 18380 WEND
- 18390 SCREEN 0,1,1,1
- 18400 GOTO 11850
- 18410 SCREEN 0,1,2,1
- 18420 CLS
- 18430 O1$ = STRING$(41,"-")
- 18440 PRINT "COMPUTER RECORD OF GALAXY FOR QUADRANT";QUADRANTX;",";QUADRANTY
- 18450 COLOR 4
- 18460 PRINT O1$
- 18470 COLOR 7
- 18480 FOR OO = 1 TO 10
- 18490 COLOR 4
- 18500 PRINT ":";
- 18510 COLOR 7
- 18520 FOR OOO = 1 TO 10
- 18530 VE = (GALAXY(OO,OOO) - INT(GALAXY(OO,OOO))) * 10
- 18540 IF VE = 0 THEN 18560
- 18550 GOTO 18620
- 18560 COLOR 1
- 18570 PRINT "***";
- 18580 COLOR 4
- 18590 PRINT ":";
- 18600 COLOR 7
- 18610 GOTO 18670
- 18620 VE = INT(GALAXY(OO,OOO))
- 18630 PRINT RIGHT$( STR$(VE + 1000),3);
- 18640 COLOR 4
- 18650 PRINT ":";
- 18660 COLOR 7
- 18670 NEXT OOO
- 18680 COLOR 4
- 18690 PRINT
- 18700 PRINT O1$
- 18710 COLOR 7
- 18720 NEXT OO
- 18730 SCREEN 0,1,1,1
- 18740 LOCATE 23,1
- 18750 RETURN
- 18760 RANDOM.NO.1 = FN R(1)
- 18770 RANDOM.NO.2 = FN R(1)
- 18780 ITEM$ = " "
- 18790 STRING.SEARCH.1 = RANDOM.NO.1
- 18800 STRING.SEARCH.2 = RANDOM.NO.2
- 18810 GOSUB 18990
- 18820 IF FIND = 0 THEN 18760
- 18830 RETURN
- 18840 PUT.IN.SAVER.1 = INT(STRING.SEARCH.2 - 0.5)
- 18850 PUT.IN.SAVER.2 = INT(STRING.SEARCH.1 - 0.5)
- 18860 PUT.IN = PUT.IN.SAVER.1 * 3 + PUT.IN.SAVER.2 * 30 + 1
- 18870 IF PUT.IN = 1 THEN 18890
- 18880 GOTO 18910
- 18890 QUADRANT$ = ITEM$ + RIGHT$(QUADRANT$,297)
- 18900 RETURN
- 18910 IF PUT.IN = 298 THEN 18930
- 18920 GOTO 18950
- 18930 QUADRANT$ = LEFT$(QUADRANT$,297) + ITEM$
- 18940 RETURN
- 18950 QUADRANT.1$ = LEFT$(QUADRANT$,PUT.IN - 1)
- 18960 QUADRANT.2$ = RIGHT$(QUADRANT$,298 - PUT.IN)
- 18970 QUADRANT$ = QUADRANT.1$ + ITEM$ + QUADRANT.2$
- 18980 RETURN
- 18990 STRING.SEARCH.1 = INT(STRING.SEARCH.1 + 0.5)
- 19000 STRING.SEARCH.2 = INT(STRING.SEARCH.2 + 0.5)
- 19010 PUT.IN = (STRING.SEARCH.2 - 1) * 3 + (STRING.SEARCH.1 - 1) * 30 + 1
- 19020 FIND = 0
- 19030 IF MID$(QUADRANT$,PUT.IN,3) < > ITEM$ THEN RETURN
- 19040 FIND = 1
- 19050 RETURN
- 19060 RESTORE 10210
- 19070 FOR OO = 1 TO QUADRANT.NAME
- 19080 READ QUADRANT.NAME$
- 19090 NEXT OO
- 19100 GEF$ = " I II III IV V I II III IV V"
- 19110 QUADRANT.NAME$ = QUADRANT.NAME$ + MID$(GEF$,QUADRANT.NO * 4 - 3,4)
- 19120 RETURN
- 19130 FOR OO = 1 TO 8
- 19140 PRINT OO;DEVICE$(OO);DAMAGE.STATS(OO)
- 19150 NEXT
- 19160 PRINT "DEVICE,STATUS";
- 19170 INPUT OO,OOO
- 19180 DAMAGE.STATS(OO) = OOO
- 19190 GOTO 11850
- 19200 O1$ = STRING$(13,"-")
- 19210 COLOR 4
- 19220 PRINT O1$
- 19230 COLOR 7
- 19240 FOR Z7 = - 1 TO 1
- 19250 GOSUB 19510
- 19260 COLOR 4
- 19270 PRINT O1$
- 19280 COLOR 7
- 19290 NEXT Z7
- 19300 RETURN
- 19310 DF$ = " ENG SRS LRS PHA TOR DAM SHE COM "
- 19320 IF DAMAGE.STATS(6) < 0 THEN 19470
- 19330 FOR OOOO = VS TO VS + 3
- 19340 COLOR 15
- 19350 PRINT MID$(DF$,OOOO * 5 - 4,5);
- 19360 IF DAMAGE.STATS(OOOO) < 0 THEN 19410
- 19370 IF DAMAGE.STATS(OOOO) > 0 THEN 19440
- 19380 COLOR 7
- 19390 PRINT USING "##"; INT(DAMAGE.STATS(OOOO));
- 19400 GOTO 19460
- 19410 COLOR 4
- 19420 PRINT USING "+#"; INT(DAMAGE.STATS(OOOO));
- 19430 GOTO 19460
- 19440 COLOR 1
- 19450 PRINT USING "+#"; INT(DAMAGE.STATS(OOOO));
- 19460 NEXT OOOO
- 19470 PRINT
- 19480 COLOR 7
- 19490 RETURN
- 19500 IF DAMAGE.STATS(3) < 0 THEN 19650
- 19510 COLOR 4
- 19520 PRINT ":";
- 19530 COLOR 7
- 19540 FOR OOOO = QUADRANTY - 1 TO QUADRANTY + 1
- 19550 IF QUADRANTX + Z7 < 1 OR QUADRANTX + Z7 > 10 THEN 19590
- 19560 IF OOOO < 1 OR OOOO > 10 THEN 19590
- 19570 PRINT RIGHT$( STR$( INT(GALAXY(QUADRANTX + Z7,OOOO)) + 1000),3);
- 19580 GOTO 19610
- 19590 COLOR 1
- 19600 PRINT "***";
- 19610 COLOR 4
- 19620 PRINT ":";
- 19630 COLOR 7
- 19640 NEXT OOOO
- 19650 PRINT
- 19660 RETURN
- 19670 GEF$ = "0123456789,"
- 19680 NEG = 1
- 19690 ICK = 0
- 19700 VQ = 0
- 19710 ISH = 0
- 19720 IF COMM$ = "" THEN 19740
- 19730 GOTO 19760
- 19740 ISH = 2
- 19750 RETURN
- 19760 IF FN A$(1) = "-" THEN 19780
- 19770 GOTO 19800
- 19780 NEG = - 1
- 19790 COMM$ = FN B$(1)
- 19800 IF FN A$(1) = "." THEN 19970
- 19810 ICK = FN C(1)
- 19820 IF ICK = 11 THEN 19940
- 19830 IF ICK = 0 THEN 19850
- 19840 GOTO 19870
- 19850 ISH = 0
- 19860 RETURN
- 19870 VQ = VQ * 10 + ICK - 1
- 19880 COMM$ = FN B$(1)
- 19890 IF COMM$ = "" THEN 19910
- 19900 GOTO 19800
- 19910 ISH = 1
- 19920 VQ = VQ * NEG
- 19930 RETURN
- 19940 ISH = 3
- 19950 COMM$ = FN B$(1)
- 19960 RETURN
- 19970 FOR OO = 1 TO 3
- 19980 COMM$ = FN B$(1)
- 19990 IF COMM$ = "" THEN 19910
- 20000 ICK = FN C(1)
- 20010 IF ICK = 11 THEN 19940
- 20020 IF ICK = 0 THEN 19850
- 20030 VQ = VQ + (ICK - 1) / 10 ^ OO
- 20040 NEXT OO
- 20050 COMM$ = FN B$(1)
- 20060 IF COMM$ = "" THEN 19910
- 20070 IF FN C(1) > 0 AND FN C(1) < 11 THEN 19850
- 20080 IF FN C(1) = 11 THEN 19940
- 20090 GOTO 19910
-